package com.chaopei.base1;

import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

/**
 * @author adai
 * @date 2019年4月27日
 * 定时任务Timer
 */
public class MyTimer {//业务层
	//业务层常见的操作
	//(1)后台校验:数据库是否为空等,数据中是否包含敏感字符
	//比如:是否包含有<scrtipt>字符,如果有则不允许往后台
	//上传数据
	//(2)数据的上传与下载
	//(3)日志管理及系统服务
	//(4)对象类型转换等
	//(5)其它更多业务
	// public int i=0;
	public void play() {
		// 要使用线程池的子类ScScheduledExecutorService实现定时任务
		ScheduledExecutorService ses = Executors.newScheduledThreadPool(1);
		while (true) {//// 循环定时执行
			ses.schedule(new Runnable() {
				@Override
				public void run() {
					// TODO Auto-generated method stub
					System.out.println("我睡了3秒!");
					/// 以下可以是其它的业务,比如每隔一天读取其它
					// 服务器中的数据到本服务中
				}
			}, 3, TimeUnit.SECONDS);
		}
		// 定时任务出可以用Timer工具来实现,它与当前的定时操作有什么区别
		// 各有什么优缺点;Timer是独立的定时工具,可以执行某一个具体任务
	}// play

	public void play1() {
		/// 实现定时任务,每隔多长时间执行某个操作
		Timer tm = new Timer();
		TimerTask tt = new TimerTask() {
			@Override
			public void run() {
				// TODO Auto-generated method stub
				add();

			}
		};
		//每隔3秒打印输出
		tm.schedule(tt, 3000,3000);
	}

	int a = 0;

	public void add() {
		System.out.println("a=" + (++a));
	}

}
